﻿/*
____
 L|ypps Web controls for ASP.NET

Copyright (c) 2009 Alessandro Zifiglio, http://www.Typps.com
EMail: alessandro@Typps.com

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
namespace Typps
{
    using System;
    using System.ComponentModel.Design;
    using System.Design;
    using System.Reflection;
    using System.Security.Permissions;
    using System.Web.UI.WebControls;

    public class EffectsCollectionEditor : CollectionEditor
    {
        #region Fields

        Type[] allowedTypes = null;

        #endregion Fields

        #region Constructors

        public EffectsCollectionEditor(Type type)
            : base(type)
        {
            allowedTypes = new Type[] {
                  typeof(Blind),
                  typeof(Fade),
                  typeof(Grow),
                  typeof(Highlight),
                  typeof(Shake),
                  typeof(Slide),
                  typeof(Squish),
                  typeof(ColorEffect),
                  typeof(Move),
                  typeof(Size),
                  typeof(Fold),
                  typeof(DropOut),
                  typeof(Puff),
                  typeof(Pulsate)
            };
        }

        #endregion Constructors

        #region Methods

        //protected override bool CanSelectMultipleInstances()
        //{
        //    return false;
        //}
        protected override CollectionEditor.CollectionForm CreateCollectionForm()
        {
            CollectionEditor.CollectionForm form1 = base.CreateCollectionForm();
            form1.Text = "Effects";
            return form1;
        }

        protected override object CreateInstance(Type itemType)
        {
            switch (itemType.Name)
            {
                case "Blind":
                    return new Blind();
                case "Fade":
                    return new Fade();
                case "Grow":
                    return new Grow();
                case "Highlight":
                    return new Highlight();
                case "Shake":
                    return new Shake();
                case "Slide":
                    return new Slide();
                case "Squish":
                    return new Squish();
                case "ColorEffect":
                    return new ColorEffect();
                case "Move":
                    return new Move();
                case "Size":
                    return new Size();
                case "Fold":
                    return new Fold();
                case "DropOut":
                    return new DropOut();
                case "Puff":
                    return new Puff();
                case "Pulsate":
                    return new Pulsate();
            }
            return Activator.CreateInstance(itemType, BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.Instance, null, null, null);
        }

        protected override Type[] CreateNewItemTypes()
        {
            return allowedTypes;
        }

        #endregion Methods
    }
}